package org.springframework.samples.mvc.basic.izvrsenaRealizacija;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.springframework.samples.mvc.basic.business.Transformer;

import com.proba.annotations.pojo.GotovProizvod;
import com.proba.annotations.pojo.IzvrsenaRealizacija;
import com.proba.annotations.pojo.Partner;
import com.proba.annotations.pojo.ProizvodenPogon;

public class IzvrsenaRealizacijaTransformer implements Transformer<IzvrsenaRealizacija, IzvrsenaRealizacijaView> {
	
	@Override
	public IzvrsenaRealizacijaView transform(IzvrsenaRealizacija entity) {
		IzvrsenaRealizacijaView view = new IzvrsenaRealizacijaView();
		view.setId(entity.getId());
		Date datum = entity.getDatum();
		view.setDatum(formatDate(datum));
		view.setEksternaRealIznosDen(entity.getEksternaRealIznosDen().toString());
		view.setEksternaRealKolicina(entity.getEksternaRealKolicina().toString());
		view.setGotovProizvod(entity.getGotovProizvod().toString());
		view.setInternaRealIznosDen(entity.getInternaRealIznosDen().toString());
		view.setInternaRealKolicina(entity.getInternaRealKolicina().toString());
		view.setPartner(entity.getPartner().getPartner());
		view.setProizvodenPogon(entity.getProizvodenPogon().getProizvodenPogon());
		view.setZaSopstvenoRealIznosDen(entity.getZaSopstvenoRealIznosDen().toString());
		view.setZaSopstvenoRealKolicina(entity.getZaSopstvenoRealKolicina().toString());
		return view;
	}

	public static String formatDate(Date datum) {
		SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
		return sdf.format(datum);
	}
	
	public static Date parseDate(String datum) {
		SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
		try {
			return sdf.parse(datum);
		} catch (ParseException e) {
			throw new RuntimeException(e);
		}
	}

	@Override
	public IzvrsenaRealizacija transform(IzvrsenaRealizacijaView view) {
		IzvrsenaRealizacija entity = new IzvrsenaRealizacija();
		entity.setId(view.getId());
		entity.setDatum(parseDate(view.getDatum()));
		entity.setEksternaRealIznosDen(Double.parseDouble(view.getEksternaRealIznosDen()));
		entity.setEksternaRealKolicina(Double.parseDouble(view.getEksternaRealKolicina()));
		
		GotovProizvod gp = new GotovProizvod();
		gp.setId(Long.parseLong(view.getGotovProizvod()));
		entity.setGotovProizvod(gp);
		
		entity.setInternaRealIznosDen(Double.parseDouble(view.getInternaRealIznosDen()));
		entity.setInternaRealKolicina(Double.parseDouble(view.getInternaRealKolicina()));
		
		Partner partner = new Partner();
		partner.setId(Long.parseLong(view.getPartner()));
		entity.setPartner(partner);
		
		ProizvodenPogon pp = new ProizvodenPogon();
		pp.setId(Long.parseLong(view.getProizvodenPogon()));
		entity.setProizvodenPogon(pp);
		
		entity.setZaSopstvenoRealIznosDen(Double.parseDouble(view.getZaSopstvenoRealIznosDen()));
		entity.setZaSopstvenoRealKolicina(Double.parseDouble(view.getZaSopstvenoRealKolicina()));
		return entity;
	}

}
